package Vistas;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

import Vistas.Componentes.MainVistaFiltro;
import Vistas.Componentes.MainVistaOrdenes;

import Clases.Usuario;
import Controladores.CargarOrden;
import Controladores.EditarOrden;

public class MainVista extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;
	private Usuario usuario;
	private MainVistaFiltro mvFiltro;
	public MainVistaOrdenes mvOrdenes;
	private JMenuItem jmiCrearOrden;
	private JMenuItem jmiOrden;
	//private List<JMenuItem> jmiEditarOrdenList;
	
	public MainVista(Usuario u) {
		this.usuario = u;
		this.mvFiltro = new MainVistaFiltro(this, u);
		this.mvOrdenes = new MainVistaOrdenes(u);
		
		this.CargarMenu();
		
		this.add(this.mvFiltro);
		this.add(this.mvOrdenes);
		
		this.setTitle(this.usuario.getTipo() + ": " + this.usuario.getLegajo());
		
		this.setSize(500, 500);
		this.setLayout(new FlowLayout());
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
		this.setVisible(true);
	}

	private void CargarMenu() {
		JMenuBar jmbMenu = new JMenuBar();
		JMenu jmOrdenes = new JMenu("Ordenes");		
		if (this.usuario.getTipo().equals(Usuario.TIPO_SUPERVISOR)) {
			this.jmiCrearOrden = new JMenuItem("Crear Orden");
			
			this.jmiCrearOrden.addActionListener(this);
			jmOrdenes.add(jmiCrearOrden);
		} else {
//			this.jmiEditarOrden = new JMenuItem("Editar Orden");
//			
//			this.jmiEditarOrden.addActionListener(this);
//			jmOrdenes.add(this.jmiEditarOrden);
			
			List<String> ordenes = this.mvOrdenes.getOrdenes();

			for (int i = 0; i < ordenes.size(); i++) {
				this.jmiOrden = new JMenuItem();
				this.jmiOrden.setText(ordenes.get(i));
				this.jmiOrden.addActionListener(this);
				
				jmOrdenes.add(this.jmiOrden);
			}
		}
		jmbMenu.add(jmOrdenes);
		this.setJMenuBar(jmbMenu);
	}
	
	public void actionPerformed(ActionEvent e) {
		if (e.getSource().equals(this.jmiCrearOrden)) {
			new CargarOrden(this.usuario, this);
		} else {
			new EditarOrden(this.usuario, this, ((JMenuItem)e.getSource()).getActionCommand());
		}
	}
	
	public void RefrescaOrdenes() {
		this.mvOrdenes.RefrescaTabla();
	}
}
